home *** CD-ROM | disk | FTP | other *** search
/ QuickTime 2.0 Developer Kit / QuickTime 2.0 Developer Kit.iso / mac / MAC / Programming Stuff / Interfaces / PInterfaces / DeskBus.p < prev    next >
Encoding:
Text File  |  1994-11-11  |  5.8 KB  |  207 lines  |  [TEXT/MPS ]

  1. {
  2.      File:        DeskBus.p
  3.  
  4.      Copyright:    © 1984-1994 by Apple Computer, Inc.
  5.                  All rights reserved.
  6.  
  7.      Version:    Universal Interfaces 2.0a3  ETO #16, MPW prerelease.  Friday, November 11, 1994. 
  8.  
  9.      Bugs?:        If you find a problem with this file, send the file and version
  10.                  information (from above) and the problem description to:
  11.  
  12.                      Internet:    apple.bugs@applelink.apple.com
  13.                      AppleLink:    APPLE.BUGS
  14.  
  15. }
  16.  
  17. {$IFC UNDEFINED UsingIncludes}
  18. {$SETC UsingIncludes := 0}
  19. {$ENDC}
  20.  
  21. {$IFC NOT UsingIncludes}
  22.  UNIT DeskBus;
  23.  INTERFACE
  24. {$ENDC}
  25.  
  26. {$IFC UNDEFINED __DESKBUS__}
  27. {$SETC __DESKBUS__ := 1}
  28.  
  29. {$I+}
  30. {$SETC DeskBusIncludes := UsingIncludes}
  31. {$SETC UsingIncludes := 1}
  32.  
  33.  
  34. {$IFC UNDEFINED __TYPES__}
  35. {$I Types.p}
  36. {$ENDC}
  37. {    ConditionalMacros.p                                            }
  38.  
  39. {$IFC UNDEFINED __MIXEDMODE__}
  40. {$I MixedMode.p}
  41. {$ENDC}
  42.  
  43. {$PUSH}
  44. {$ALIGN MAC68K}
  45. {$LibExport+}
  46.     
  47. TYPE
  48.     ADBAddress = CHAR;
  49.  
  50.     {
  51.         ADBCompletionProcPtr uses register based parameters on the 68k and cannot
  52.         be written in or called from a high-level language without the help of
  53.         mixed mode or assembly glue.
  54.  
  55.         In:
  56.          => dataBuffPtr     A0.L
  57.          => opDataAreaPtr    A2.L
  58.          => command         D0.L
  59.     }
  60.     ADBCompletionProcPtr = ProcPtr;  { PROCEDURE ADBCompletion(dataBuffPtr: Ptr; opDataAreaPtr: Ptr; command: LONGINT); }
  61.     ADBCompletionUPP = UniversalProcPtr;
  62.  
  63. CONST
  64.     uppADBCompletionProcInfo = $007B9802; { Register PROCEDURE (4 bytes in A0, 4 bytes in A2, 4 bytes in D0); }
  65.  
  66. FUNCTION NewADBCompletionProc(userRoutine: ADBCompletionProcPtr): ADBCompletionUPP;
  67.     {$IFC NOT GENERATINGCFM }
  68.     INLINE $2E9F;
  69.     {$ENDC}
  70.  
  71. PROCEDURE CallADBCompletionProc(dataBuffPtr: Ptr; opDataAreaPtr: Ptr; command: LONGINT; userRoutine: ADBCompletionUPP);
  72.     {$IFC NOT GENERATINGCFM}
  73.     {To be implemented:  Glue to move parameters into registers.}
  74.     {$ENDC}
  75. TYPE
  76.     {
  77.         ADBDeviceDriverProcPtr uses register based parameters on the 68k and cannot
  78.         be written in or called from a high-level language without the help of
  79.         mixed mode or assembly glue.
  80.  
  81.         In:
  82.          => devAddress      D0.B
  83.          => devType         D1.B
  84.     }
  85.     ADBDeviceDriverProcPtr = ProcPtr;  { PROCEDURE ADBDeviceDriver(devAddress: ByteParameter; devType: ByteParameter); }
  86.     ADBDeviceDriverUPP = UniversalProcPtr;
  87.  
  88. CONST
  89.     uppADBDeviceDriverProcInfo = $00050802; { Register PROCEDURE (1 byte in D0, 1 byte in D1); }
  90.  
  91. FUNCTION NewADBDeviceDriverProc(userRoutine: ADBDeviceDriverProcPtr): ADBDeviceDriverUPP;
  92.     {$IFC NOT GENERATINGCFM }
  93.     INLINE $2E9F;
  94.     {$ENDC}
  95.  
  96. PROCEDURE CallADBDeviceDriverProc(devAddress: ByteParameter; devType: ByteParameter; userRoutine: ADBDeviceDriverUPP);
  97.     {$IFC NOT GENERATINGCFM}
  98.     {To be implemented:  Glue to move parameters into registers.}
  99.     {$ENDC}
  100. TYPE
  101.     {
  102.         ADBServiceRoutineProcPtr uses register based parameters on the 68k and cannot
  103.         be written in or called from a high-level language without the help of
  104.         mixed mode or assembly glue.
  105.  
  106.         In:
  107.          => dataBuffPtr     A0.L
  108.          => completionProc    A1.L
  109.          => dataPtr         A2.L
  110.          => command         D0.L
  111.     }
  112.     ADBServiceRoutineProcPtr = ProcPtr;  { PROCEDURE ADBServiceRoutine(dataBuffPtr: Ptr; completionProc: ADBCompletionUPP; dataPtr: Ptr; command: LONGINT); }
  113.     ADBServiceRoutineUPP = UniversalProcPtr;
  114.  
  115. CONST
  116.     uppADBServiceRoutineProcInfo = $0F779802; { Register PROCEDURE (4 bytes in A0, 4 bytes in A1, 4 bytes in A2, 4 bytes in D0); }
  117.  
  118. FUNCTION NewADBServiceRoutineProc(userRoutine: ADBServiceRoutineProcPtr): ADBServiceRoutineUPP;
  119.     {$IFC NOT GENERATINGCFM }
  120.     INLINE $2E9F;
  121.     {$ENDC}
  122.  
  123. PROCEDURE CallADBServiceRoutineProc(dataBuffPtr: Ptr; completionProc: ADBCompletionUPP; dataPtr: Ptr; command: LONGINT; userRoutine: ADBServiceRoutineUPP);
  124.     {$IFC NOT GENERATINGCFM}
  125.     {To be implemented:  Glue to move parameters into registers.}
  126.     {$ENDC}
  127. TYPE
  128.     {
  129.         ADBInitProcPtr uses register based parameters on the 68k and cannot
  130.         be written in or called from a high-level language without the help of
  131.         mixed mode or assembly glue.
  132.  
  133.         In:
  134.          => callOrder       D0.B
  135.     }
  136.     ADBInitProcPtr = ProcPtr;  { PROCEDURE ADBInit(callOrder: ByteParameter); }
  137.     ADBInitUPP = UniversalProcPtr;
  138.  
  139. CONST
  140.     uppADBInitProcInfo = $00000802; { Register PROCEDURE (1 byte in D0); }
  141.  
  142. FUNCTION NewADBInitProc(userRoutine: ADBInitProcPtr): ADBInitUPP;
  143.     {$IFC NOT GENERATINGCFM }
  144.     INLINE $2E9F;
  145.     {$ENDC}
  146.  
  147. PROCEDURE CallADBInitProc(callOrder: ByteParameter; userRoutine: ADBInitUPP);
  148.     {$IFC NOT GENERATINGCFM}
  149.     {To be implemented:  Glue to move parameters into registers.}
  150.     {$ENDC}
  151.  
  152. TYPE
  153.     ADBOpBlock = RECORD
  154.         dataBuffPtr:            Ptr;                                    { address of data buffer }
  155.         opServiceRtPtr:            ADBServiceRoutineUPP;                    { service routine pointer }
  156.         opDataAreaPtr:            Ptr;                                    { optional data area address }
  157.     END;
  158.     ADBOpBPtr = ^ADBOpBlock;
  159.  
  160.     ADBDataBlock = PACKED RECORD
  161.         devType:                CHAR;                                    { device type }
  162.         origADBAddr:            CHAR;                                    { original ADB Address }
  163.         dbServiceRtPtr:            ADBServiceRoutineUPP;                    { service routine pointer }
  164.         dbDataAreaAddr:            Ptr;                                    { data area address }
  165.     END;
  166.     ADBDBlkPtr = ^ADBDataBlock;
  167.  
  168.     ADBSetInfoBlock = RECORD
  169.         siService:                ADBServiceRoutineUPP;                    { service routine pointer }
  170.         siDataAreaAddr:            Ptr;                                    { data area address }
  171.     END;
  172.     ADBSInfoPtr = ^ADBSetInfoBlock;
  173.  
  174.  
  175. PROCEDURE ADBReInit;
  176.     {$IFC NOT GENERATINGCFM}
  177.     INLINE $A07B;
  178.     {$ENDC}
  179. FUNCTION ADBOp(data: Ptr; compRout: ADBCompletionUPP; buffer: Ptr; commandNum: INTEGER): OSErr;
  180. FUNCTION CountADBs: INTEGER;
  181.     {$IFC NOT GENERATINGCFM}
  182.     INLINE $A077, $3E80;
  183.     {$ENDC}
  184. FUNCTION GetIndADB(VAR info: ADBDataBlock; devTableIndex: INTEGER): ADBAddress;
  185.     {$IFC NOT GENERATINGCFM}
  186.     INLINE $301F, $205F, $A078, $1E80;
  187.     {$ENDC}
  188. FUNCTION GetADBInfo(VAR info: ADBDataBlock; adbAddr: ByteParameter): OSErr;
  189.     {$IFC NOT GENERATINGCFM}
  190.     INLINE $101F, $205F, $A079, $3E80;
  191.     {$ENDC}
  192. FUNCTION SetADBInfo({CONST}VAR info: ADBSetInfoBlock; adbAddr: ByteParameter): OSErr;
  193.     {$IFC NOT GENERATINGCFM}
  194.     INLINE $101F, $205F, $A07A, $3E80;
  195.     {$ENDC}
  196.  
  197. {$ALIGN RESET}
  198. {$POP}
  199.  
  200. {$SETC UsingIncludes := DeskBusIncludes}
  201.  
  202. {$ENDC} {__DESKBUS__}
  203.  
  204. {$IFC NOT UsingIncludes}
  205.  END.
  206. {$ENDC}
  207.